মেশিন লার্নিংয়ে, ডেটা প্রি-প্রসেসিং একটি গুরুত্বপূর্ণ পদক্ষেপ, বিশেষ করে যখন ডেটায় ক্যাটেগরিক্যাল (ক্যাটাগরি বা শ্রেণীভিত্তিক) বৈশিষ্ট্য থাকে। ক্যাটেগরিক্যাল বৈশিষ্ট্য মেশিন লার্নিং মডেলে সরাসরি ব্যবহৃত হতে পারে না, তাই এগুলোকে সংখ্যাগত (নমেরিক) ফর্মে রূপান্তর করতে হয়। Feature Encoding এই কাজটি করে, যা ক্যাটেগরিক্যাল ডেটাকে একটি সংখ্যায় রূপান্তরিত করে, যাতে মডেল এটি বুঝতে পারে এবং সঠিকভাবে কাজ করতে পারে।
বিভিন্ন ধরনের ফিচার এনকোডিং পদ্ধতি রয়েছে, তবে সবচেয়ে জনপ্রিয় দুটি হল Label Encoding এবং One-Hot Encoding। আসুন, এদের সম্পর্কে বিস্তারিত আলোচনা করি:
১. Label Encoding
Label Encoding একটি সোজা পদ্ধতি, যেখানে প্রতিটি ক্যাটেগরিক্যাল মানকে একটি ইউনিক সংখ্যা দ্বারা রূপান্তরিত করা হয়। উদাহরণস্বরূপ, যদি একটি বৈশিষ্ট্য Color থাকে এবং এর মধ্যে Red, Green, এবং Blue এই মানগুলো থাকে, তাহলে প্রতিটি মানকে একটি সংখ্যা দিয়ে প্রতিস্থাপন করা হয়:
Red-> 0Green-> 1Blue-> 2
এই প্রক্রিয়ায় প্রতিটি ক্যাটেগরিক্যাল ভ্যালু একটি নির্দিষ্ট সংখ্যা দ্বারা প্রতিস্থাপিত হয়। তবে, Label Encoding সাধারণত শুধুমাত্র একধরনের ক্যাটেগরিক্যাল বৈশিষ্ট্যের জন্য ভাল কাজ করে, যেগুলোতে অর্ডার বা ধারাবাহিকতা থাকে (যেমন, Low, Medium, High)। যদি ক্যাটেগরিক্যাল ডেটার মধ্যে কোনো প্রাকৃতিক অর্ডার না থাকে, তবে Label Encoding মডেলের পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।
উদাহরণ:
from sklearn.preprocessing import LabelEncoder
# ডেটা তৈরি
categories = ['Red', 'Green', 'Blue', 'Green', 'Red']
# LabelEncoder অবজেক্ট তৈরি
encoder = LabelEncoder()
# ডেটা এনকোডিং
encoded_categories = encoder.fit_transform(categories)
print(encoded_categories) # আউটপুট: [2 1 0 1 2]
২. One-Hot Encoding
One-Hot Encoding একটি জনপ্রিয় পদ্ধতি যেখানে প্রতিটি ক্যাটেগরিক্যাল মানের জন্য একটি নতুন কলাম তৈরি করা হয় এবং একটি নির্দিষ্ট ক্যাটেগরি উপস্থিত থাকলে সেই কলামে 1 প্রদান করা হয়, অন্যথায় 0 প্রদান করা হয়।
উদাহরণস্বরূপ, যদি একটি বৈশিষ্ট্য Color থাকে এবং এর মধ্যে Red, Green, এবং Blue এই মানগুলো থাকে, তখন One-Hot Encoding এইভাবে কাজ করবে:
| Color | Red | Green | Blue |
|---|---|---|---|
| Red | 1 | 0 | 0 |
| Green | 0 | 1 | 0 |
| Blue | 0 | 0 | 1 |
| Green | 0 | 1 | 0 |
| Red | 1 | 0 | 0 |
এখানে, Color বৈশিষ্ট্যের জন্য তিনটি নতুন কলাম তৈরি করা হয়েছে (Red, Green, Blue), এবং ডেটার মধ্যে প্রতিটি ক্যাটেগরিক্যাল মানের জন্য একটি 1 দেয়া হয়েছে, এবং অন্যান্য কলামে 0 রাখা হয়েছে।
One-Hot Encoding সাধারণত সেইসব ক্যাটেগরিক্যাল বৈশিষ্ট্যের জন্য উপযুক্ত, যেগুলোর মধ্যে কোনো প্রাকৃতিক অর্ডার নেই এবং প্রতিটি ক্যাটেগরি সমান গুরুত্ব বহন করে।
উদাহরণ:
from sklearn.preprocessing import OneHotEncoder
import numpy as np
# ডেটা তৈরি
categories = [['Red'], ['Green'], ['Blue'], ['Green'], ['Red']]
# OneHotEncoder অবজেক্ট তৈরি
encoder = OneHotEncoder(sparse=False)
# ডেটা এনকোডিং
encoded_categories = encoder.fit_transform(categories)
print(encoded_categories)
আউটপুট:
[[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
Label Encoding এবং One-Hot Encoding এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Label Encoding | One-Hot Encoding |
|---|---|---|
| ডেটা রূপান্তর | একটি সংখ্যায় রূপান্তর করা হয় | নতুন কলাম তৈরি করে প্রতিটি মানকে 1 অথবা 0 এ রূপান্তর করা হয় |
| যেমন সমস্যা | অর্ডার বা র্যাঙ্কিংয়ের জন্য ভালো | যখন কোনো প্রাকৃতিক অর্ডার না থাকে |
| অতিরিক্ত কলাম | কোনো অতিরিক্ত কলাম তৈরি হয় না | প্রতিটি ক্যাটেগরি জন্য একটি কলাম তৈরি হয় |
| ব্যবহারযোগ্যতা | ক্যাটেগরি যদি অর্ডার থাকে তবে ভালো | ক্যাটেগরি যদি অর্ডার না থাকে তবে ভালো |
| গুরুত্ব | কখনও কখনও মডেল অস্বাভাবিক আচরণ করতে পারে | মডেল প্যারামিটারগুলি একে অপরের সাথে প্রতিযোগিতার সৃষ্টি করতে পারে না |
কখন কোনটি ব্যবহার করবেন?
- Label Encoding:
- যখন আপনার ক্যাটেগরিক্যাল বৈশিষ্ট্যে একটি প্রাকৃতিক অর্ডার বা র্যাঙ্কিং থাকে, যেমন
Low,Medium,High। - যদি মডেলটি ক্যাটেগরিক্যাল মানের মধ্যে সম্পর্ক (অর্ডার) বুঝতে সক্ষম হয়, তখন Label Encoding ব্যবহার করা যেতে পারে।
- যখন আপনার ক্যাটেগরিক্যাল বৈশিষ্ট্যে একটি প্রাকৃতিক অর্ডার বা র্যাঙ্কিং থাকে, যেমন
- One-Hot Encoding:
- যখন ক্যাটেগরিক্যাল বৈশিষ্ট্যে কোনো অর্ডার বা র্যাঙ্কিং না থাকে এবং প্রতিটি ক্যাটেগরি সমান গুরুত্ব বহন করে, তখন One-Hot Encoding ব্যবহৃত হয়।
- যখন মডেলটি ক্যাটেগরিক্যাল মানের মধ্যে সম্পর্ক বুঝতে পারবে না, যেমন রঙ (Red, Green, Blue)।
সারাংশ
- Label Encoding ক্যাটেগরিক্যাল বৈশিষ্ট্যের প্রতিটি মানকে একটি সংখ্যায় রূপান্তরিত করে, যা কিছু নির্দিষ্ট ধরনের সমস্যার জন্য উপকারী।
- One-Hot Encoding প্রতিটি ক্যাটেগরিক্যাল মানের জন্য একটি নতুন কলাম তৈরি করে, যা সাধারণত অর্ডারহীন ডেটার জন্য সেরা পদ্ধতি।
Read more